import md5 from './md5.js'

const host = 'http://123.206.82.183:8020/api/method';
const secret = '03966addfabff2ad30b66c1917cb9381'
const key = '1583900555';


/**
 * @param {Object} url 后端路由名字
 * @param {Object} data 需要上传的数据
 * @param {Object} su res.data.code == 200 执行的方法
 * @param {Object} fa 请求失败执行的方法
 * @param {Object} co 请求后要执行的方法
 * @param {Object} other res.data.code != 200 执行的方法
 */
function requestP(url, data, su, fa, co, other) {
	let now_url = host+url;
	
	let time = new Date().getTime()
	let second = parseInt(time/1000)
	let sign  = md5(second+secret)
	
	let da = {
		ver: 1,
		sign: sign,
		key: key,
		time: second
	}
	if(data.method && (data.method != 'login')){
		try {
		    const value = uni.getStorageSync('user');
			// console.log('获取用户本地存储', value)
		    if (value.accessToken) {
				// 有accessToken
		        // console.log('有accessToken', value);
				
				da.token = value.accessToken
		    }else{
				uni.showToast({
					title: '请先登录',
					mask: true,
					icon: 'none',
					success() {
						setTimeout(function(){
							uni.reLaunch({
							    url: '/pages/login/index'
							});
						}, 1500)
					}
				})
				// 本地没有存储用户信息,算作首次登录
				return;
			}
		} catch (e) {
		    // error
			uni.showToast({
				title: '获取accessToken异常, 请重新请求',
				icon: 'none',
				mask: true
			})
		}
	}
	let nowData = Object.assign(data, da)
	uni.request({
		url: now_url,
		method: 'POST',
		data: nowData,
		success(res) {
			// console.log('请求数据结果res request.js', JSON.parse(JSON.stringify(res)))
				if(res.data.code == 200){
					if(typeof su == 'function'){
						// console.log('请求数据结果res request.js res.data.code 200', JSON.parse(JSON.stringify(res)))
						su(res)
					}
				}else{
					if(res.data.msg){
						// 其他错误,给出提示
						uni.showToast({
							title: res.data.msg,
							mask: true,
							icon: 'none'
						})
						let message = res.data.msg;
						let n = message.indexOf('令牌')
						if( n >= 0){
							// 有令牌,重新登录
							setTimeout(()=>{
								uni.reLaunch({
								    url: '/pages/login/index'
								});
							}, 666)
						}
					} else {
						uni.hideLoading()
					}
					
					if(typeof other == 'function'){
						// console.log('requestP other ', res)
						// 请求成功,但状态码 不是 200的情况
						other(res)
					}
				}
			
			
		},
		fail(err) {
			// console.log('请求失败 request js', err)
			if(err.errMsg.indexOf("timeout") != -1) {
				uni.showToast({
					title: '网络请求超时',
					mask: true,
					icon: 'none'
				})
				// uni.showModal({
				// 	title: '网络连接错误',
				// 	content: '网络不稳定或断网，请检查网络连接后重试',
				// 	showCancel: false
				// })
			}
			if(typeof fa == 'function'){
				// console.log('fa request.js 数据请求失败 err', err)
				fa(err)
			}
			
			
		},
		complete() {
			if(typeof co == 'function'){
				co()
			}
		}
	})
}
function requestG(url, su, fa,co) {
	uni.request({
		url: url,
		method: 'POST',
		success(res) {
			if(typeof su == 'function'){
				su(res)
			}
		},
		fail(err) {
			if(typeof fa == 'function'){
				fa(err)
			}
		},
		complete() {
			if(typeof co == 'function'){
				co()
			}
		}
	})
}
export  {requestP, requestG}
